In multiprocessor environments, such as ATM (automated teller machine) networks and other large-scale database systems, multiple processes or threads (in larger systems, numbering in the thousands) share processor time.
Typically, at its execution stage a process will be allotted a time slice or “quantum” of processing time on a processor. If the process is not completed within the quantum of time, context information reflecting the level of completion of the process will be stored, and the process will be put to the end of a queue (the “Run Queue”) of processes awaiting access to a processor. This “context switch” itself consumes processing time, as data corresponding to the process being executed (including the context word, as will be understood) must be moved from the processor registers to main memory, typically RAM (random access memory), and another process must be moved from main memory to the process registers for subsequent execution by the processor.
In executing a process, a processor may require access to certain resources including I/O (input/output) devices and segments of memory. In the multiprocessor context, conflicts between executing processes may arise if multiple processes require access to the same exclusive resource at the same time. Different techniques have been developed to address these types of process conflicts.
As a result of the processing expense of context switching, instead of simply generating a context switch if a process requires access to a resource which is already in use, one technique for resolving process conflicts involves the use of spin latches. Spin latches cause a processor to “spin” or loop in accordance with predetermined spin counter values, while the processor periodically checks to determine if the desired resource has become available.
In some instances, particularly in large-scale database systems, the computing system's processing efficiency may drop significantly if the number of processes competing for a particular resource is sufficiently large, as volumes of these processes unsuccessfully use processing time in running spin latches.
Accordingly, a solution that addresses, at least in part, these and other short comings is desired.